package com.dhms.lib.app

import android.app.Application
import android.content.Context
import android.os.Build
import android.preference.PreferenceManager
import androidx.multidex.MultiDexApplication
import com.getkeepsafe.relinker.ReLinker
import com.tencent.mmkv.MMKV

open class LibApplication:MultiDexApplication() {

    override fun onCreate() {
        super.onCreate()
        app=this
        initMMKVReal(this)
    }
    companion object{
        lateinit var mmkv: MMKV
        private lateinit var app: Application
        fun getAppContext(): Context {
            return app
        }
        fun initMMKVReal(application: Application) {
            var rootDir = application.filesDir.absolutePath + "/mmkv"
            //一些 Android 设备（API level 19 Android 4.4）在安装/更新 APK 时可能出错, 导致 libmmkv.so 找不到。
            // 然后就会遇到 java.lang.UnsatisfiedLinkError 之类的 crash。有个开源库 ReLinker 专门解决这个问题，
            // 你可以用它来加载 MMKV：
            if (Build.VERSION.SDK_INT == 19) {
                MMKV.initialize(
                    rootDir
                ) { libName -> ReLinker.loadLibrary(app, libName) }
            } else {
                rootDir = MMKV.initialize(application)
            }
            mmkv =
                MMKV.mmkvWithID("com.dhms.mmkv", MMKV.MULTI_PROCESS_MODE) //避免安卓多进程重启sp丢失
            initMMKV(application)
        }
        private fun initMMKV(application: Application?) {
            val old_main = PreferenceManager
                .getDefaultSharedPreferences(application)
            // 迁移旧数据
            val size = mmkv!!.importFromSharedPreferences(old_main)
            if (size > 0) {
//                old_main.edit().clear().apply()
            }
        }
    }
}